import {isBlank} from '@/utils/util'

let regId = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
let email = /^(\w+\.?)*\w+@(?:\w+\.)\w+$/    //邮箱
let tel = /^1[345789]\d{9}$/        //联系手机码
let price = /^[0-9]+(.[0-9]{1,2})?$/        //1-2位小数验证
let phone = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/        //正确联系手机
let number = /^[1-9]\d*$/    //正整数
let nonnegative = /^\d+$/    //整数
let name = /^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,10}$/;   //姓名
export default {
  nameValidator: function (rule, value, callback) {
    if (!value) {
      return callback(new Error('姓名不能为空'))
    }
    if (!name.test(value)) {
      callback(new Error('请输入正确姓名!'))
    } else {
      callback()
    }
  },
  // 邮箱的正则
  emailValidator: function (rule, value, callback) {
    if (!value) {
      return callback(new Error('邮箱不能为空'))
    }
    if (!email.test(value)) {
      callback(new Error('请输入正确的邮箱!'))
    } else {
      callback()
    }
  },
  // 身份证的验证规则
  cardIdValidator: function (rule, value, callback) {
    if (!value) {
      return callback(new Error('身份证不能为空'))
    }
    if (!regId.test(value)) {
      callback(new Error('请输入正确的二代身份证号码'))
    } else {
      callback()
    }
  },
  // 电话号码的验证
  Tel: (rule, value, callback) => {
    if (!value) {
      return callback(new Error('电话不能为空'))
    }
    if (!tel.test(value)) {
      callback(new Error('请正确填写电话号码'))
    } else {
      callback()
    }
  },
  // 联系手机的验证
  phoneValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('联系手机不能为空'))
    }
    if (!phone.test(value)) {
      callback(new Error('请正确填写联系手机'))
    } else {
      callback()
    }
  },
  // 价格的验证
  priceValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (!price.test(value)) {
      callback(new Error('请输入正确价格'))
    } else {
      callback()
    }
  },
  // 非空验证
  nullValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    callback()
  },
  // 必选项验证
  checkValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必选项'))
    }
    callback()
  },
  // 整数验证
  numberValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (!number.test(value)) {
      callback(new Error('请输入整数'))
    } else {
      callback()
    }
    callback()
  },
  // 最大值验证
  maxNumberValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (value > rule.max) {
      callback(new Error('超出最大值限制'))
    } else {
      callback()
    }
    callback()
  },
  // 最小值验证
  minNumberValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (value < rule.min) {
      callback(new Error('超出最小值限制'))
    } else {
      callback()
    }
    callback()
  },
  // 最大长度验证
  maxLengthValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (value < rule.maxLength) {
      callback(new Error('超出最大长度'))
    } else {
      callback()
    }
    callback()
  },
  // 最低长度验证
  minLengthValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (value < rule.maxLength) {
      callback(new Error('低于最低长度'))
    } else {
      callback()
    }
    callback()
  },
  // 非负整数验证
  integerValidator: (rule, value, callback) => {
    if (isBlank(value)) {
      return callback(new Error('必填项'))
    }
    if (!nonnegative.test(value)) {
      callback(new Error('请输入非负整数'))
    } else {
      callback()
    }
    callback()
  },
}
